// https://umijs.org/config/
import { defineConfig } from '@umijs/max';
import { join } from 'path';
import defaultSettings from './defaultSettings';
import routes from './routes';

const { REACT_APP_ENV = 'dev', NODE_ENV } = process.env;

export default defineConfig({
  title: '安防管理综合平台',
  hash: true, //开启 hash 模式，处理浏览器缓存问题
  targets: {
    //浏览器兼容
    ie: 11,
  },
  routes, //路由的配置，不在路由中引入的文件不会编译
  history: {
    //配置路由模式
    type: 'browser',
  },
  historyWithQuery: {}, //问好传参时，通过query传参
  devtool: NODE_ENV === 'development' ? 'eval' : false, //// 只设置 dev 阶段的 sourcemap
  inlineLimit: 10000, //配置图片打包方式，大于10KB,单独打包成一个图片，如果小于10KB，打包base64
  jsMinifier: 'terser', //js压缩方式
  jsMinifierOptions: {},
  publicPath: NODE_ENV === 'development' ? '/' : '/abc/', //项目打包完毕之后的路径
  theme: {
    //主题的配置
    // 如果不想要 configProvide 动态设置主题需要把这个设置为 default
    // 只有设置为 variable， 才能使用 configProvide 动态设置主色调
    'root-entry-name': 'variable',
  },
  /**
   * @name moment 的国际化配置
   * @description 如果对国际化没有要求，打开之后能减少js的包大小
   * @doc https://umijs.org/docs/api/config#ignoremomentlocale
   */
  ignoreMomentLocale: true,
  //代理，解决跨域问题
  proxy: {
    '/api': {
      target: 'http://192.168.0.12:8888/api',
      changeOrigin: true,
      pathRewrite: { '^/api': '' },
    },
  },
  fastRefresh: true, //快速热更新配置
  //============== 以下都是max的插件配置 ===============
  model: {}, //开启model
  initialState: {},
  layout: {
    locale: true, // 默认开启，如无需菜单国际化可关闭
    ...defaultSettings,
  },
  moment2dayjs: {
    preset: 'antd',
    plugins: ['duration'],
  },
  locale: {
    // default zh-CN
    default: 'zh-CN',
    antd: true,
    // default true, when it is true, will use `navigator.language` overwrite default
    baseNavigator: true,
  },
  antd: {},
  request: {}, //网络请求配置
  access: {}, //权限插件
  headScripts: [
    // 解决首次加载时白屏的问题
    { src: '/scripts/loading.js', async: true },
  ],
  //================ pro 插件配置 =================
  presets: ['umi-presets-pro'],
  /**
   * @name openAPI 插件的配置
   * @description 基于 openapi 的规范生成serve 和mock，能减少很多样板代码
   * @doc https://pro.ant.design/zh-cn/docs/openapi/
   */
  openAPI: [
    {
      requestLibPath: "import { request } from '@umijs/max'",
      // 或者使用在线的版本
      // schemaPath: "https://gw.alipayobjects.com/os/antfincdn/M%24jrzTTYJN/oneapi.json"
      schemaPath: join(__dirname, 'oneapi.json'),
      mock: true,
    },
    {
      requestLibPath: "import { request } from '@umijs/max'",
      schemaPath: 'https://gw.alipayobjects.com/os/antfincdn/CA1dOm%2631B/openapi.json',
      projectName: 'swagger',
    },
  ],
  mfsu: {
    strategy: 'normal',
  },
  esbuildMinifyIIFE: true,
  requestRecord: {},
});
